Policy access control lists attached to resources

ABSTRACT

Methods, storage systems and computer program products implement embodiments of the present invention that include defining, for an entity, a policy access control list including one or more access rules, each of the access rules including one or more user conditions and one or more entity conditions. Upon receiving a request from a user to access a given entity, one or more user attributes associated with the user and one or more entity attributes associated with the given entity are identified. For each of the access rules, the one or more user conditions are applied to the one or more user attributes, the one or more entity conditions are applied to the one or more entity attributes. Access to the given content entity is granted to the user upon determining that a minimum threshold of the one or more user conditions and the one or more entity conditions are met.

FIELD OF THE INVENTION

The present invention relates generally to storage systems, andspecifically to managing dynamic policy access control lists.

BACKGROUND

Access Control Lists (ACLs) are data models used by computer systems inorder to identify a given user's access rights to specific resources inthe computer system. Examples of ACL models used in enterprise storagesystems include role based access control (RBAC) models and attributebased access control (ABAC) models. RBAC and ABAC models enable systemadministrators to control access to resources by setting policies basedon roles and attributes, and establishment of their hierarchies andrelationships.

The description above is presented as a general overview of related artin this field and should not be construed as an admission that any ofthe information it contains constitutes prior art against the presentpatent application.

SUMMARY

There is provided, in accordance with an embodiment of the presentinvention a method, including defining, by a storage system for anentity, a policy access control list (PACL) including one or more accessrules, each of the access rules including one or more user conditionsand one or more entity conditions, receiving, from a user, a request toaccess a given entity, identifying, by the storage system, one or moreuser attributes associated with the user, identifying one or more entityattributes associated with the given entity, for each of the one or moreaccess rules, applying, the one or more user conditions to the one ormore user attributes, and applying the one or more entity conditions tothe one or more entity attributes, and granting, to the user, access tothe given content entity upon determining that a minimum threshold ofthe one or more user conditions and the one or more entity conditionsare met.

There is also provided, in accordance with an embodiment of the presentinvention a computing facility, including a storage device configured tostore an entity, multiple entity attributes associated with the entity,and a policy access control list (PACL) including one or more accessrules, each of the access rules including one or more user conditionsand one or more entity conditions, and a processor configured toreceive, from a user, a request to access the entity, to identify one ormore user attributes associated with the user, for each of the one ormore access rules, to apply, the one or more user conditions to the oneor more user attributes, and to apply the one or more entity conditionsto the one or more entity attributes, and to grant, to the user, accessto the given content entity upon determining that a minimum threshold ofthe one or more user conditions and the one or more entity conditionsare met.

There is further provided, in accordance with an embodiment of thepresent invention a computer program product, the computer programproduct including a non-transitory computer readable storage mediumhaving computer readable program code embodied therewith, the computerreadable program code including computer readable program codeconfigured to define, for an entity, a policy access control list (PACL)including one or more access rules, each of the access rules includingone or more user conditions and one or more entity conditions, computerreadable program code configured to receive, from a user, a request toaccess a given entity, computer readable program code configured toidentify, by the storage system, one or more user attributes associatedwith the user, computer readable program code configured to identify oneor more entity attributes associated with the given entity, computerreadable program code configured, for each of the one or more accessrules, to apply, the one or more user conditions to the one or more userattributes, and to apply the one or more entity conditions to the one ormore entity attributes, and computer readable program code configured togrant, to the user, access to the given content entity upon determiningthat a minimum threshold of the one or more user conditions and the oneor more entity conditions are met.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure is herein described, by way of example only, withreference to the accompanying drawings, wherein:

FIG. 1 is a block diagram of a computer facility configured to implementpolicy access control lists (PACLs) for multiple content objectsassociated with a context entity, in accordance with an embodiment ofthe present invention;

FIG. 2 is a block diagram that shows a context entity and its associatedPACL and content entities, in accordance with a first embodiment of thepresent invention;

FIG. 3 is a block diagram that shows a context entity and its associatedPACL and content entities, in accordance with a second embodiment of thepresent invention;

FIG. 4 is a flow diagram that schematically illustrates a method ofdefining a given PACL for a given content entity, in accordance anembodiment of the present invention; and

FIG. 5 is a flow diagram that schematically illustrates a method ofusing a given PACL to grant access to a given content entity, inaccordance an embodiment of the present invention.

DETAILED DESCRIPTION OF EMBODIMENTS Overview

As enterprises increasingly migrate data to cloud based storageplatforms, role based attribute control (RBAC) servers and attributebased access (ABAC) servers may not be able to scale in order to supportlarge numbers (e.g., billions and even trillions) of data objects. Whenstoring large numbers of objects, ACLs have the following drawbacks:

-   -   ACLs are platform-dependent, and may have different        system-dependent formats.    -   ACLs are typically limited in their ability to describe complex        access control policies (e.g., Linux™ permission bits or NFSv4        ACLs).

Additionally, since ACLs are typically distributed with the resourcesthey protect, their platform dependence is more acute than in othermodels especially if they are used for data migration or federation ofheterogeneous systems.

Embodiments of the present invention provide methods and systems forimplementing policy access control lists (PACLs) to restrict access tocontent entities associated with a context entity (i.e., the contextentity provides context the content entities). As described hereinbelow,a given PACL may comprise a list of access control policies thatcomprises flexible expressions based on dynamically defined attributes.

The PACLs can be implemented using regular expressions. Alternatively,the PACLs may comprise lists of key/value pairs, where the “key”corresponds to an attribute name or an identifier as it is specified ina user token or the system, and the “value” corresponds to an attributevalue.

In some embodiments, the PACLs may be attached to the stored resourcesand may be kept as part of their metadata or headers. For example, thePACLs can be stored in the underlying file system. Alternatively, thePACLs can be maintained in a supplementary data store (e.g., arelational database, distributed catch, or a key-value/NoSQL datastore).

The PACLs describe access rights to perform operations on the resourcesto which they are attached. In some embodiments, these operations can bespecified as part of the PACLs (similarly to read/write operations inPOSIX or NFSv4 ACLs). In an alternative embodiment, the access rightsfor each operation may be specified in a dedicated PACL kept as aseparate entry. For example, PACLs granting read and write permissionsfor a file can be kept separately as read-PACLs and write-PACLs. When anew operation (e.g. “transcode”) is added to the system a new type ofcorresponding PACLs may be created.

Additionally, the PACLs may specify policies that apply to groups ofitems that they control, such as groups of metadata attributes orsubsets of lower hierarchy resources. These “group PACLs” can beimportant for providing an even finer grained authorization for itemsthat are not controlled by dedicated PACLs.

In a first embodiment, group PACLs may be used in storage systems (e.g.,cloud based storage systems) that implement coarse grained accesscontrol at a container/bucket/directory level for providing fine grainedpermissions at object/file levels. In the first embodiment, PACLs athigher levels (e.g. container or directory levels) may contain rulescontrolling the access to the underlying objects based on theirproperties (e.g., only users with role “editor” may access all containerobjects of type “audio or video”).

In a second embodiment, group PACLs may store access permissions togroups of a given resource's attributes, and specify who can access oneor more metadata attributes. For example, in a healthcare scenario, agiven group PACLs may grant system administrators access to systemmetadata attributes (e.g., a file creation time or a file size), butprevent the administrators from accessing attributes with personalinformation (e.g., fields with patient information such as name andidentifications).

PACLs enable storage systems to control access to subgroups of items orlower level resources lacking dedicated authorization mechanisms.Specifically, such “group PACLs” may contain policies that apply togroups of items that they control. This allows authorizing fine-grainedoperations on resources that do not have dedicated authorizationmechanisms. For example, in systems without fine-grained access controlat the object level, “group PACLs” at the container level may containaccess rules that apply to groups of objects in the container. Inanother embodiment “group PACLs” may control access to groups ofmetadata attributes.

Systems implementing embodiments of the present invention can allow theattributes expressed in PACLs to change dynamically, thereby eliminatingthe need to modify the software managing access to the system'sresources. Additionally, when performing user authorizations, thesesystems may enable each authorization decision to be made withoutcommunicating with external systems such as security managers or policyservers, thereby providing a cloud-scale system with enterprise-gradeaccess control.

Furthermore, systems implementing embodiments of the present inventioncan use PACLs to authorize a wide range of operations which are notrequired to be pre-defined. Since the PACLs may comprise policies thatspecify access rights based on dynamic attributes, new operations can beeasily added anytime and each operation can be authorized by a differentset of PACLs policies.

System Description

FIG. 1 is a block diagram of a computer facility 20 configured toutilize context policy access control lists (PACLs) 22 to authorizeaccess to content entities 24 (also referred to herein as sub-entities),in accordance with an embodiment of the present invention. Contententities comprise data objects that store content. Examples of contententities include, but are not limited to files and binary large objects(BLOBS).

Facility 20 comprises client computers 26, a security management system28, and a storage management system 30 that communicate over a localarea network (LAN) 32. Storage management system 30 comprises a storageprocessor 34, a memory 36, and a storage device 38 such as a disk driveand a solid state drive. While the configuration in FIG. 1 shows asingle storage management system 30 comprising a single storage device38, other configurations are considered to be within the spirit andscope of the present invention. For example, facility 20 may compriseone or more storage management systems 30, and each of the storagemanagement systems may comprise multiple storage devices 38.Alternatively, storage management system 30 may comprise a distributedcloud based storage system that communicates with computers 26 andsystem and 30 via a wide area network.

In response to storage commands received from computers 26 via LAN 32,processor 34 manages content entities 24 responsively to the storagecommands. Examples of managing content entities 24 include, but are notlimited to, creating a given content entity 24, renaming the givencontent entity, reading data from the given content entity, writing datato the given content entity, and deleting the given content entity.

Processor 34 also manages one or more context entities 40 on storagedevice 38 by associating a given context entity 40 with one or morecontent entities 24, and arranging the given context entity to providecontext (i.e., manage storage parameters) for the one or more contententities. Each context entity 40 comprises a data structure thatprovides context to (i.e., stores and/or references) one or more contententities 24 (and/or one or more additional context entities 40).Examples of context entities 40 include folders, repositories, cloudstorage containers and buckets. In embodiments where a given contententity 24 comprises a BLOB and a given context entity 40 comprises acontainer, processor 34 can associate the given content entity with thegiven context entity (and the given context entity can provide contextto the given content entity) by storing the BLOB to the container.

For each given content entity 24, storage system 30 stores one or morecontent entity attributes 42 that comprise metadata describing the givencontent entity. Additionally, storage system 30 may store one or morecontext entity attributes 56 for each context entity 40. Examples ofattributes 42 and 56 include, but are not limited to, an entity type(e.g., a JPEG image), a creation date, a last modification date, aretention date, and privacy settings.

Security management system 28 comprises a security processor 44 and asecurity memory 46 that stores user tokens 48. Each token 48 representsa respective user (not shown) of computers 26 in facility 20 (i.e., eachtoken 48 has a corresponding user). User tokens 48 comprise userattributes 50 that comprise metadata that describes the users. Examplesof user attributes 50 include, but are not limited to a user name, arole (e.g., a title), a group name, a location, and an email address.

In embodiments of the present invention, processor 34 manages contextpolicy access control lists (context PACLs) on storage device 38. Insome embodiments, the context PACLs can be stored in the storagesystem's underlying file system, or as stored as supplementary datastore (e.g., a relational database or a NoSQL data store).

Each context PACL 22 has a corresponding context entity 40 and comprisesone or more context access rules 52 that control access to the contententities stored in the corresponding context entity. Typically, eachcontext access rule 52 comprises one or more context user conditionsand/or and one or more context entity conditions that are defined by auser of facility 20. The context entity conditions are logicalconditions based on content attributes 42 and/or context entityattributes 56, and the context user conditions are logical conditionsbased on user attributes 50. In some embodiments, processor 34 executes,from memory 36 an access enforcer application 54 that is configured,using embodiments described herein, to manage access to content entities24 based on user attributes 50, entity attributes 42, context attributes56, content PACLs 58 and context PACLs 22.

For example, if a first user stores digital photographs (i.e., contententities 24) in a given context entity 40 labeled “photos”, the firstuser can define a first context access rule that restricts access to thedigital photographs to additional users that have a given user attribute50 that indicates that the first user and the additional users belong toa group called “family”.

If the first user wants to further restrict access to one or more of thephotographs, the first user can add an entity attribute 42 to the one ormore photographs indicating that the one or more photographs are“private”, and add an additional context access rule 52 that restrictsaccess to “private” photographs to the first user.

In embodiments of the present invention, upon detecting a second userlogging into a given computer 26, processor 44 conveys, to the givencomputer, the user's corresponding token comprising a given userattribute 50 indicating that the second user belongs to the “family”group. If the second user wants to view the photographs in the “photos”context entity, access enforcer 54 can apply the first and the secondcontext access rules to the second user's respective user attributes 50and the photographs respective entity attributes 42, to enable thesecond user to view all of the photographs in the given context entitythat do not have the “private” entity attribute.

FIG. 2 is a block diagram that shows a first given context entity 40 andits associated context PACL 22 and content entities 24, in accordancewith a first embodiment of the present invention. In the example shownin FIG. 2, content entities 24 and their respective components can bedifferentiated by appending a letter to the identifying numeral, so thatthe content entities comprise content entities 24A and 24B.

Each content entity 24 comprises content data 57 (also referred toherein as a data object) and has associated entity attributes 42 (alsoreferred to herein as object attributes), as described supra. The firstgiven context entity provides context to content entities 24A and 24B,and processor 34 can control access to content entities 24A and 24B viacontext PACL 22A. In other words context PACL 22A controls access to allcontent entities 22 that are provided context by the first given contextentity.

FIG. 3 is a block diagram that shows a second given context entity 40,in accordance with an embodiment of the present invention. In theexample shown in FIG. 3, content entities 24 and their respectivecomponents can be differentiated by appending a letter to theidentifying numeral, so that the content entities comprise contententities 24C and 24D.

In the example shown in FIG. 3, each given content entity 24 has anassociated content PACL 58 that controls access to the given contententity. Each content PACL 58 comprises one or more content access rules59, and each of the content access rules comprises one or more contentuser conditions and one or more content entity conditions. The contententity conditions are logical conditions based on content attributes 42,and the content user conditions are logical conditions based on userattributes 50.

In embodiments of the present invention, if a given content entity 24has an associated content PACL 58 having one or more content accessrules (i.e., in addition to an associated context PACL 22 having one ormore context access rules 52), processor 34 can grant access to thegiven content entity upon, for each of the one or more context accessrules and each of the one or more content access rules, the one or morecontext user conditions and the one or more content user conditionsbeing met by the one or more user attributes 50, and the one or morecontext entity conditions and the one or more content entity conditionsbeing met by the one or more entity attributes 42.

Processors 34 and 44 typically comprise general-purpose computers, whichare programmed in software to carry out the functions described herein.The software may be downloaded to systems 28 and 30 in electronic form,over a network, for example, or it may be provided on non-transitorytangible media, such as optical, magnetic or electronic memory media.Alternatively, some or all of the functions of processors 34 and may becarried out by dedicated or programmable digital hardware components, orusing a combination of hardware and software elements.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

These computer readable program instructions may also be stored in acomputer readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

Managing Distributed System Metadata

FIG. 4 is a flow diagram that describes a method of defining a givenpolicy access control list (PACL), in accordance with an embodiment ofthe present invention. The given PACL may comprise a context PACL 22 ora content PACL 58.

In a first attribute definition step 60, a system administrator forfacility 20 defines multiple entity attributes. Each of the entityattributes comprises a given content entity attribute 42 or a givencontext entity attribute 56. In a user attribute definition step 62, thesystem administrator defines one or more user attributes 50.

In a first access rule definition step 64, the system administratordefines (e.g., via a given computer 26), for a given entity, a givenaccess rule. The given access rule comprises one or more user conditionsand/or one or more entity conditions. If the given PACL comprises acontext PACL 22, then given access rule comprises a context access rule52. If the given PACL comprises a content PACL 58, then the given accessrule comprises a content access rule 59.

For example, the given access rule may comprise (a) a context usercondition that checks if the user has a user attribute 50 indicating thethat the user is a member of a group called “family”, and (b) an contextentity condition that checks if a given content entity 24 in the givencontext entity has an entity attribute 42 indicating that the givencontext entity is an image.

In a store step 66, processor 34 stores the given access rule in thecorresponding PACL 22 the given entity. In a comparison step 68, if thesystem administrator wants to define an additional access rule for thegiven entity, the system administrator defines the additional accessrule in a second access definition step 70, and the method continueswith step 66. Returning to step 68, if there are no more access rulesfor the given entity, then the method ends.

For example, the additional rule may comprise (a) a context usercondition that checks if the user has the user attribute indicating thatthe user is a member of the “family” group, and (b) an entity attribute42 that checks if a given content entity 24 has an entity attribute 42indicating that the given content entity is “private”. Therefore thecontext access rules in the given context PACL can grant, to a userhaving a user attribute 50 indicating that the user is a member of the“family” group, viewing access to content entities 24 in the givencontext entity that do not have a “private” entity attribute 42.

In some embodiments, the access rules in the PACLs in storage system 30may authorize different types of access to the entities, such asread/write, read-only. In additional embodiments, the PACLs mayauthorize operations on the entities such as:

-   -   Conversion rules that define how to convert data in a given        entity from a first format to a second format. In one embodiment        the conversion may comprise changing the data format of data 57        for given content entity 40. In other embodiments, converting        the conversion may comprise changing the format of the given        entity's attributes. For example, processor 34 can reformat the        entity attributes from “XML” to “JSON” and vice-versa.    -   Data migration rules that define, for example in a cloud storage        environment, how to migrate a given entity from a first data        cloud location (also referred to herein as a first storage        system) to a second data cloud location (also referred to herein        as a second storage system). In some embodiments, the migration        may comprise migrating the entity attributes of the given entity        from the first data location to the second data cloud location.        Examples of the first and the second data cloud locations        include, but are not limited to, cloud-based storage systems and        content management systems.

FIG. 5 is a flow diagram that describes a method authorizing access of agiven entity (i.e., a given content entity 24 or a given context entity40) to a user, in accordance with an embodiment of the presentinvention. In a login step 80, processor 44 receives, from a givenclient computer 26, a login notification indicating that a user haslogged into facility 20. In response to the login request, processor 44identifies a given token 48 that is associated with the user, andconveys, in a convey step 82, the given token to the given computer.

In a receive step 84, processor 34 receives a request, from the user, toaccess a given entity. In embodiments of the present invention, therequest includes the given token that includes one or more userattributes 50. Processor 34 processes the token by identifying the oneor more user attributes stored in the token.

In response to the request, processor 34 identifies (i.e., retrieves)the entity attributes for the given content entity in an identificationstep 86. If the given entity comprises a given content entity 24 thathas its context provided by a given context entity 40, then the entityattributes comprise content attributes 42 and/or context attributes 56.If the given entity comprises a given context entity 40, then the entityattributes comprise context attributes 56.

In a retrieval step 88, retrieves the PACL for the given entity, therebyidentifying one or more access rules (i.e., content access rules and/orcontext access rules) associated with the given entity. As describedsupra, the identified access rules comprise one or more user conditionsand one or more entity conditions.

If the given entity comprises a first context entity 40 or a givencontent entity 24 that is provided context by a second context entity40, then the retrieved PACL comprises a given context PACL 22 comprisingcontext access rules 52. If the given content entity has an associatedcontent PACL 58, then the retrieved PACL comprises the given contextPACL and the associated content PACL comprising content access rules 59(i.e., the access rules may comprise both the context and the contentaccess rules).

In a determination step 90, processor 34 determines the required (i.e.,a minimum threshold) of the access rules are in the retrieved PACL aremet. It is sufficient that one of the user conditions and/or entityconditions (also referred to herein simply as conditions) in the accessrule is met. Alternatively, criteria such as “all of the conditions met”or “at least three of the conditions met” can be set.

To perform the determination step, processor 34 checks if the one ormore user conditions in the retrieved PACL are met by the one or moreuser attributes 50 received in step 84, and checks if the one or moreentity conditions in the retrieved PACL are met by the one or moreentity attributes identified in step 86.

If the given entity comprises a given content entity 24 provided contextby a given context entity 40, then processor 34 checks if the one ormore context user conditions in the associated context PACL and the oneor more content user conditions in the associated content PACL are metby the one or more user attributes 50 received in step 84, and checks ifthe one or more context entity conditions in the associated context PACLand the one or more content entity conditions in the associated contentPACL are met by the one or more entity attributes 42 identified in step86.

In a comparison step 92, if the required user conditions and all theentity conditions in the determination step are met, then processor 34grants the requested access to the user in an approval step 94, and themethod ends. However, if any of the user conditions or any of the entityconditions are not met, then processor 34 denies the requested access tothe user in a denial step 96 and the method ends.

The flowchart(s) and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It will be appreciated that the embodiments described above are cited byway of example, and that the present invention is not limited to whathas been particularly shown and described hereinabove. Rather, the scopeof the present invention includes both combinations and subcombinationsof the various features described hereinabove, as well as variations andmodifications thereof which would occur to persons skilled in the artupon reading the foregoing description and which are not disclosed inthe prior art.

1. A method, comprising: defining, by a storage system for a pluralityof entities, a policy access control list (PACL) comprising one or moreaccess rules, each of the access rules comprising one or more userconditions and one or more entity conditions, wherein the plurality ofentities comprise a context entity and a content entity; receiving, froma user, a request to access a given entity; identifying, by the storagesystem, one or more user attributes associated with the user;identifying one or more entity attributes associated with the givenentity; for each of the one or more access rules, applying, the one ormore user conditions to the one or more user attributes, and applyingthe one or more entity conditions to the one or more entity attributes;granting, to the user, access to the given content entity upondetermining that a minimum threshold of the one or more user conditionsand the one or more entity conditions are met; and providing, by thecontext entity, context to multiple content entities, and wherein theentity comprises entities comprise a given content entity, and whereinthe entity attributes comprise content entity attributes, wherein eachof the entity attributes is selected from a list comprising a contextentity attribute and a content entity attribute, and wherein the PACLcomprises a context PACL, and wherein each of the user conditionscomprises a context user condition, and wherein each of the entityconditions comprises a context entity condition, wherein the PACLcomprises a content PACL, and wherein each of the user conditionscomprises an additional content user condition, and wherein each of theentity conditions comprises a content entity condition, wherein grantingaccess to the given entity comprises migrating the given content entityfrom a first storage system to a second storage system, and wherein thePACL comprises one or more entity migration conditions and one or moreentity migration rules, and wherein migrating the given entity comprisesusing the one or more entity migration conditions and the one or moreentity migration rules.
 2. (canceled)
 3. (canceled)
 4. (canceled)
 5. Themethod according to claim 1, wherein each of the content entitiescomprises a data object storing data content, and wherein each of thecontent entity attributes comprises an object attribute for a given dataobject.
 6. The method according to claim 1, wherein each of the contextentities is selected from a list consisting of a cloud storagecontainer, a bucket, a folder and a repository.
 7. The method accordingto claim 1, wherein granting access to the given entity comprisesconverting the given entity from a first format to a second format. 8.The method according to claim 7, wherein converting the given entitycomprises converting the associated entity attributes from the firstformat to the second format.
 9. The method according to claim 7, whereinthe PACL comprises one or more entity conversion rules and one or moreentity conversion conditions, and wherein converting the given entitycomprises using the one more entity conversion rules and the one or moreentity conversion conditions.
 10. (canceled)
 11. The method according toclaim 1, wherein migrating the given entity comprises migrating theassociated entity attributes from the first storage system to the secondstorage system.
 12. (canceled)
 13. The method according to claim 1,wherein each of the first and the second storage systems is selectedfrom a list consisting of a storage system, cloud system and a contentmanagement system.
 14. The method according to claim 1, whereinidentifying the one or more entity attributes comprises retrieving, fromthe storage system, the one or more entity attributes associated withthe given entity.
 15. The method according to claim 1, whereinidentifying the one or more user attributes comprises receiving andprocessing an access token comprising the one or more user attributes.16. A storage system, comprising: a storage device configured to store aplurality of entities, and a policy access control list (PACL)comprising one or more access rules, each of the access rules comprisingone or more user conditions and one or more entity conditions, whereinthe plurality of entities comprise a context entity and a contententity; and a processor configured: to receive, from a user, a requestto access a given entity; to identify one or more user attributesassociated with the user; to identify one or more entity attributesassociated with the given entity; for each of the one or more accessrules, to apply, the one or more user conditions to the one or more userattributes, and to apply the one or more entity conditions to the one ormore entity attributes; to grant, to the user, access to the givencontent entity upon determining that a minimum threshold of the one ormore user conditions and the one or more entity conditions are met; andto provide, by the context entity, context to multiple content entities,and wherein the entity comprises entities comprise a given contententity, and wherein the entity attributes comprise content entityattributes, wherein each of the entity attributes is selected from alist comprising a context entity attribute and a content entityattribute, and wherein the PACL comprises a context PACL, and whereineach of the user conditions comprises a context user condition, andwherein each of the entity conditions comprises a context entitycondition, wherein the PACL comprises a content PACL, and wherein eachof the user conditions comprises an additional content user condition,and wherein each of the entity conditions comprises a content entitycondition, wherein the processor is configured to grant access to thegiven entity by migrating the given content entity from a first storagesystem to a second storage system, and wherein the PACL comprises one ormore entity migration conditions and one or more entity migration rules,and wherein the processor is configured to migrate the given entity byusing the one or more entity migration conditions and the one or moreentity migration rules.
 17. (canceled)
 18. (canceled)
 19. (canceled) 20.A computer program product, the computer program product comprising: anon-transitory computer readable storage medium having computer readableprogram code embodied therewith, the computer readable program codecomprising: computer readable program code configured to define, for aplurality of entities, a policy access control list (PACL) comprisingone or more access rules, each of the access rules comprising one ormore user conditions and one or more entity conditions, wherein theplurality of entities comprise a context entity and a content entity;computer readable program code configured to receive, from a user, arequest to access a given entity; computer readable program codeconfigured to identify, by the storage system, one or more userattributes associated with the user; computer readable program codeconfigured to identify one or more entity attributes associated with thegiven entity; computer readable program code configured, for each of theone or more access rules, to apply, the one or more user conditions tothe one or more user attributes, and to apply the one or more entityconditions to the one or more entity attributes; computer readableprogram code configured to grant, to the user, access to the givencontent entity upon determining that a minimum threshold of the one ormore user conditions and the one or more entity conditions are met; andcomputer readable program code configured to provide, by the contextentity, context to multiple content entities, and wherein the entitycomprises entities comprise a given content entity, and wherein theentity attributes comprise content entity attributes, wherein each ofthe entity attributes is selected from a list comprising a contextentity attribute and a content entity attribute, and wherein the PACLcomprises a context PACL, and wherein each of the user conditionscomprises a context user condition, and wherein each of the entityconditions comprises a context entity condition, wherein the PACLcomprises a content PACL, and wherein each of the user conditionscomprises an additional content user condition, and wherein each of theentity conditions comprises a content entity condition, wherein thecomputer readable program code is configured to grant access to thegiven entity by migrating the given content entity from a first storagesystem to a second storage system, and wherein the PACL comprises one ormore entity migration conditions and one or more entity migration rules,and wherein the computer readable program code is configured to migratethe given entity by using the one or more entity migration conditionsand the one or more entity migration rules.